home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WCLASS95.ZIP / CPPFUNC3.SCT < prev    next >
Encoding:
Text File  |  1995-09-12  |  18.8 KB  |  262 lines

  1. // Class: CLASS_NAME
  2.  
  3. //////////////////////////.cpp file/////////////////////////////////////////////////////
  4. #include "$TRUNCATE_EIGHT$CLASS_NAME$.h"                    
  5.  
  6. SELECT_WHEN ATTRIBUTE_IS_STATIC
  7. [ATTRIBUTE_TYPE CLASS_NAME$::$ATTRIBUTE_NAME = ATTRIBUTE_INITIAL_VALUE$; //Static data member initialization]
  8.  
  9. // Functions for class CLASS_NAME
  10. [
  11. //  Function:     OPERATION_NAME
  12. //  Purpose:     OPERATION_COMMENT1
  13. //  Parameters: CPP_OPERATION_PARAMETERS
  14. //  Comments:     OPERATION_COMMENT2
  15. OPERATION_RETURN_TYPE CLASS_NAME::OPERATION_NAME(CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT 
  16. { OPERATION_CODE
  17. }  ] 
  18.  
  19.         //Default constructor alternative to compiler provided default constructor
  20.         //Association object data member pointers initialized to null association object NO_OUTPUT_BEGIN
  21.         //Ensure correct initial values are entered in the Attribute Specification NO_OUTPUT_END
  22. CLASS_NAME::CLASS_NAME ()
  23. SELECT_WHEN LOGICAL_NOT ATTRIBUTE_IS_STATIC [NO_RETURN NO_REPEAT: ATTRIBUTE_NAME(ATTRIBUTE_INITIAL_VALUE),DELETE_LAST_SYMBOL]
  24. {   [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  25.     [AGGREGATION_MANY_NAME$Index = 0; //Index for array of 1:M aggregation part objects ]
  26.     [ASSOCIATION_MANY_NAME$Index = 0; //Index for array of 1:M association objects ]
  27.          //Initialization of array of 1:M association objects to null association objects
  28.     [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ]
  29.  
  30.            //Constructor with arguments
  31.            //Update to argument list to initialize base class data members and const data members
  32.            //e.g. (int aNumber) : BaseClass (aNumber) , constMinimumValue (aMinimumValue)          
  33. CLASS_NAME::CLASS_NAME ( SELECT_WHEN LOGICAL_NOT ATTRIBUTE_IS_STATIC [NO_RETURN ATTRIBUTE_TYPE a$ATTRIBUTE_NAME,DELETE_LAST_SYMBOL] ) 
  34. [NO_RETURN NO_REPEAT: BASE_CLASS$() ,DELETE_LAST_SYMBOL]
  35. SELECT_WHEN ATTRIBUTE_IS_CONSTANT [//NO_RETURN NO_REPEAT: ATTRIBUTE_NAME (a$ATTRIBUTE_NAME),DELETE_LAST_SYMBOL]
  36. { SELECT_WHEN ATTRIBUTE_IS_NORMAL [ATTRIBUTE_NAME = a$ATTRIBUTE_NAME; //Initialization of attributes ]
  37.   [AGGREGATION_MANY_NAME$Index = 0;  //Index for array of 1:M aggregation part objects ]
  38.   [ASSOCIATION_MANY_NAME$Index = 0;  //Index for array of 1:M association objects ]
  39.   [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  40.               //Initialization of array of 1:M association objects to null association objects
  41.   [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ]
  42.  
  43.         //Copy constructor alternative to compiler provided default copy constructor  NO_OUTPUT_BEGIN
  44.         //Update initializer list for const data members, e.g. : constMinimumValue (aCar.minimumValue)
  45.         //Copy alternatives for association objects: (1) initialize association object to nullAssociation Object
  46.         //(2) Shallow copy to copy pointers of association objects (3) Deep copy to create new association objects
  47.         //and copy values of association objects
  48.         //Commented out code assigns 1:1 and 1:M association object data member pointers for shallow copy
  49.         //Remove // if you desire to assign pointers NO_OUTPUT_END    
  50. CLASS_NAME::CLASS_NAME (const CLASS_NAME$& a$CLASS_NAME ) 
  51. [NO_RETURN NO_REPEAT: BASE_CLASS (a$CLASS_NAME),DELETE_LAST_SYMBOL]
  52. SELECT_WHEN ATTRIBUTE_IS_CONSTANT [//NO_RETURN NO_REPEAT: ATTRIBUTE_NAME (a$CLASS_NAME$.$ATTRIBUTE_NAME),DELETE_LAST_SYMBOL]
  53. {int i = 0;
  54. [ AGGREGATION_MANY_NAME$Index = 0;           //Index for array of 1:M aggregation part objects ]
  55. [ ASSOCIATION_MANY_NAME$Index = 0;           //Index for array of 1:M association objects ]
  56. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;] 
  57. [ AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]  
  58. [ ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]     
  59. [ //ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME; //Commented out shallow copy]
  60. [ for ( i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  61. [ for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; //Initialization of pointers to null association object ]
  62. [ //Commented out shallow copy
  63. [ //for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  64.  
  65.         //Operator= Assignment Operator alternative to compiler provided operator=  NO_OUTPUT_BEGIN
  66.         //Assignment alternatives for association objects: (1) initialize association object to nullAssociation Object
  67.         //(2) Shallow copy to copy pointers to association objects (3) Deep copy to copy value of association objects
  68.         //Commented out code copies pointers for 1:1 and 1:M association object data members for shallow copy NO_OUTPUT_END
  69. CLASS_NAME& CLASS_NAME::operator= (const CLASS_NAME$& a$CLASS_NAME)
  70. { if (this == &a$CLASS_NAME) return *this;
  71.   int i = 0; 
  72. [  BASE_CLASS$::operator= (a$CLASS_NAME);]
  73. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;]
  74. [  AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]
  75. [  ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  76. [  // ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME;//Commented out shallow copy]    
  77. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  78. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ; //Initialization of pointers to null association object ]
  79. [  //for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  80.   return *this;
  81. }
  82.  
  83.       //Operator== Equality Operator NO_OUTPUT_BEGIN
  84.       //No compiler generated operator== generated
  85.       //Comparison alternatives for association objects: (1) Do not compare association objects, (2) Do a shallow comparison
  86.       //to compare pointers of association objects (3) Do a deep comparison to compare the values of association objects
  87.       //Update for 1:M association object data members
  88.       //Change C array to C++ collection for 1:M data members     NO_OUTPUT_END
  89. int CLASS_NAME::operator== (const CLASS_NAME$& a$CLASS_NAME) const
  90. { return (
  91. [ (BASE_CLASS$::operator== (a$CLASS_NAME)) &&]
  92. [     //Equality check for 1:1 association data members for shallow comparison
  93. //( ASSOCIATION_ONE_NAME == a$CLASS_NAME$.$ASSOCIATION_ONE_NAME) &&]
  94.              //Equality check for 1:1 aggregation part data members
  95. [ ( AGGREGATION_ONE_NAME == a$CLASS_NAME$.$AGGREGATION_ONE_NAME) &&]
  96.              //Equality check for 1:M aggregation parts 
  97.              //Update for the correct number of aggregation part objects
  98. [ ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&&
  99.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&&
  100.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&&
  101.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&&
  102. ]
  103.                //Equality check for 1:M association objects for shallow compare 
  104.                //Update for the correct number of associated objects
  105. [//( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&&
  106. //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&&
  107. //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&&
  108. //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&&
  109.                  //Equality check for attribute data members
  110. SELECT_WHEN ATTRIBUTE_IS_NORMAL [(ATTRIBUTE_NAME == a$CLASS_NAME$.$ATTRIBUTE_NAME) &DELETE_LAST_SYMBOL&DELETE_LAST_SYMBOL]
  111. );
  112. }
  113.  
  114.                   //Operator<< extraction for cout  NO_OUTPUT_BEGIN
  115.                   //Change C array to C++ collection for 1:M data members  NO_OUTPUT_END     
  116. ostream& operator<< (ostream& os, const CLASS_NAME$& a$CLASS_NAME)
  117. { int i = 0;
  118. [  os << (BASE_CLASS &) a$CLASS_NAME;]
  119.   os << "Object Attribute Values - Class CLASS_NAME" << endl;
  120. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  121. SELECT_WHEN ATTRIBUTE_IS_CONSTANT [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  122. SELECT_WHEN ATTRIBUTE_IS_STATIC [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  123. [  os << "  AGGREGATION_ONE_NAME$: " << a$CLASS_NAME$.$AGGREGATION_ONE_NAME << endl;]
  124. [  if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) os << " ASSOCIATION_ONE_NAME$: " << *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME << endl;
  125. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) os << "  AGGREGATION_MANY_NAME$: " << a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]  << endl; ]
  126. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  127.   { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] != &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS)  os << " ASSOCIATION_MANY_NAME$: " << *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]  << endl;
  128.   } ] 
  129.   return os;
  130. }
  131.  
  132.                   //Operator>> insertion for cin  NO_OUTPUT_BEGIN
  133.                   //Change C array to C++ collection for 1:M data members  NO_OUTPUT_END     
  134. istream& operator>> (istream& is, CLASS_NAME$& a$CLASS_NAME)
  135. { int i = 0;
  136. [  is >> (BASE_CLASS &) a$CLASS_NAME;]
  137.   cout << "\nEnter Object Attribute Values or 0 - Class CLASS_NAME"; 
  138. SELECT_WHEN ATTRIBUTE_IS_NORMAL [ cout << "\nEnter ATTRIBUTE_NAME : " << endl; 
  139.   is >> a$CLASS_NAME$.$ATTRIBUTE_NAME;]        
  140. [  is >> a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]
  141. [  if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) is >> *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME ; ]
  142. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) is >> a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  143. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  144.   { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]!= &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS)  is >> *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ;
  145.   } ]
  146.   return is;
  147. }
  148.  
  149. [                    //Remove function for 1:1 association object data member
  150.                       //Warning delete ASSOCIATION_ONE_NAME object if dynamic object
  151. void CLASS_NAME::remove$ASSOCIATION_ONE_CLASS$() //throw (string)
  152. { string no$ASSOCIATION_ONE_CLASS$;
  153.   if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) throw no$ASSOCIATION_ONE_CLASS$;
  154.   else ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS;  
  155. } ]  
  156. [                    //Get accessor function for 1:M association object data member  NO_OUTPUT_BEGIN
  157.                      //Change C array to C++ collection class with iterator
  158.                      //Returns the first 1:M association object pointer in the array   NO_OUTPUT_END
  159. const ASSOCIATION_MANY_CLASS$* CLASS_NAME::getFirst$ASSOCIATION_MANY_CLASS$() const //throw (string)
  160. { string ASSOCIATION_MANY_CLASS$CollectionEmpty;
  161.   if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty;
  162.   else return ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL];
  163. }  ]
  164. [                    //Exists function for 1:1 association object data member
  165. int CLASS_NAME::exists$ASSOCIATION_ONE_CLASS$() const
  166. { if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) return 0; else return 1; 
  167. }  ] 
  168. [                    //Exists function with argument for 1:1 association object data member
  169. int CLASS_NAME::exists$ASSOCIATION_ONE_CLASS ($ASSOCIATION_ONE_CLASS$* const a$ASSOCIATION_ONE_CLASS$) const
  170. { if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) return 0;
  171.   else if ( *$ASSOCIATION_ONE_NAME == *a$ASSOCIATION_ONE_CLASS ) return 1; 
  172.   else return 0;
  173. }  ]  
  174. [                     //Get accessor function for 1:M aggregation collection  NO_OUTPUT_BEGIN
  175.                       //Change C array to C++ collection class with iterator
  176.                       //Returns pointer to the 1st element of the C array   NO_OUTPUT_END
  177. const AGGREGATION_MANY_CLASS$* CLASS_NAME::get$AGGREGATION_MANY_CLASS$Collection () const 
  178. { return AGGREGATION_MANY_NAME ;
  179. }  ] 
  180. [                    //Set accessor function for 1:M aggregation collection   NO_OUTPUT_BEGIN
  181.                      //Change C array to C++ collection class with iterator
  182.                      //Parameter is pointer to the first element of the C array   NO_OUTPUT_END
  183. void CLASS_NAME::set$AGGREGATION_MANY_CLASS$Collection ($AGGREGATION_MANY_CLASS$* const a$AGGREGATION_MANY_CLASS$Collection)
  184. {  for (int i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = a$AGGREGATION_MANY_CLASS$Collection LITERAL_SYMBOL[ i LITERAL_SYMBOL];
  185. }  ]
  186. [                    //Exists function for 1:M aggregation part data member   NO_OUTPUT_BEGIN
  187.                      //Change C array to C++ collection class with iterator   NO_OUTPUT_END
  188. int CLASS_NAME::exists$AGGREGATION_MANY_CLASS (const AGGREGATION_MANY_CLASS$& a$AGGREGATION_MANY_CLASS$) const 
  189. { for (int i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++)
  190.   {  if ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] == a$AGGREGATION_MANY_CLASS ) return 1;
  191.   }
  192. return 0;
  193. }  ]
  194. [                    //Get accessor function for 1:M aggregation part data member  NO_OUTPUT_BEGIN
  195.                      //Returns the first 1:M aggregation part in the array
  196.                      //Change C array to C++ collection class with iterator    NO_OUTPUT_END
  197. const AGGREGATION_MANY_CLASS$& CLASS_NAME::getFirst$AGGREGATION_MANY_CLASS$() const 
  198. { return AGGREGATION_MANY_NAME LITERAL_SYMBOL[ 0 LITERAL_SYMBOL] ;    
  199. }  ]
  200. [                    //Get accessor function for 1:M association collection  NO_OUTPUT_BEGIN
  201.                      //Change C array to C++ collection class with iterator
  202.                      //Returns pointer to 1st element of the C array    NO_OUTPUT_END
  203. const ASSOCIATION_MANY_CLASS$* CLASS_NAME::get$ASSOCIATION_MANY_CLASS$Collection() const 
  204. { return *$ASSOCIATION_MANY_NAME;
  205. } ] 
  206. [                   //Set accessor function for 1:M association collection  NO_OUTPUT_BEGIN
  207.                     //Change C array to C++ collection class with iterator
  208.                     //Parameter is pointer to 1st element of the C array   NO_OUTPUT_END
  209. void CLASS_NAME::set$ASSOCIATION_MANY_CLASS$Collection ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$Collection)
  210. { int i = 0;
  211.   for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ;
  212.   for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = &a$ASSOCIATION_MANY_CLASS$Collection LITERAL_SYMBOL[ i LITERAL_SYMBOL];
  213. }  ]
  214. [                  //Add function for 1:M association object data member  NO_OUTPUT_BEGIN
  215.                    //Change C array to C++ collection class with iterator  NO_OUTPUT_END
  216. void CLASS_NAME::add$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) //throw (string) 
  217. { string ASSOCIATION_MANY_CLASS$CollectionFull;
  218.   if ( ASSOCIATION_MANY_NAME$Index == maxNumberOf$ASSOCIATION_MANY_CLASS$s) throw ASSOCIATION_MANY_CLASS$CollectionFull;
  219.   else
  220.   { ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL] = a$ASSOCIATION_MANY_CLASS ;
  221.     ASSOCIATION_MANY_NAME$Index++;
  222.   }
  223. }  ]
  224. [                  //Remove function for 1:M association object data member
  225.                    //Warning delete ASSOCIATION_MANY_NAME object if dynamic object NO_OUTPUT_BEGIN
  226.                     //Change C array to C++ collection class with iterator     NO_OUTPUT_END
  227. void CLASS_NAME::removeLast$ASSOCIATION_MANY_CLASS ( ) //throw (string)
  228. {  string ASSOCIATION_MANY_CLASS$CollectionEmpty;
  229.    if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty;
  230.    else
  231.    { ASSOCIATION_MANY_NAME$Index--; 
  232.      ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ;
  233.    }
  234. } ]  
  235. [                      //Remove all function for 1:M association object data member
  236.                        //Warning delete ASSOCIATION_MANY_NAME object if dynamic object  NO_OUTPUT_BEGIN
  237.                         //Change C array to C++ collection class with iterator    NO_OUTPUT_END
  238. void CLASS_NAME::removeAll$ASSOCIATION_MANY_CLASS$s ( ) //throw (string)
  239. { string ASSOCIATION_MANY_CLASS$CollectionEmpty;
  240.   if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty;
  241.   for (int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; 
  242. } ] 
  243. [                       //Exists function for 1:M association object data member  NO_OUTPUT_BEGIN
  244.                         //Change C array to C++ collection class with iterator    NO_OUTPUT_END
  245. int CLASS_NAME::exists$ASSOCIATION_MANY_CLASS$() const 
  246. { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == &null$ASSOCIATION_MANY_CLASS ) return 0; else return 1; 
  247. }  ] 
  248. [                       //Exists function for 1:M association object data member   NO_OUTPUT_BEGIN
  249.                         //Change C array to C++ collection class with iterator     NO_OUTPUT_END
  250. int CLASS_NAME::exists$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) const
  251. { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ 0 LITERAL_SYMBOL] == &null$ASSOCIATION_MANY_CLASS ) return 0; 
  252.   for (int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  253.   {  if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] == a$ASSOCIATION_MANY_CLASS ) return 1;
  254.   }
  255.   return 0;
  256. }  ] 
  257.  
  258.